package com.lkd.service.impl;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lkd.dto.SkuDto;
import com.lkd.entity.Sku;
import com.lkd.entity.SkuClass;
import com.lkd.mapper.SkuClassMapper;
import com.lkd.mapper.SkuMapper;
import com.lkd.service.SkuService;
import com.lkd.vo.PageBean;
import com.lkd.vo.SkuVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * <p>
 * 商品表 服务实现类
 * </p>
 *
 * @author 聂德祥
 * @since 2024-08-17
 */
@Service
public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements SkuService {
@Autowired
  private SkuClassMapper skuClassMapper;
    @Override
    public PageBean<SkuVo> findByPage(SkuDto skuDto) {
        Page<Sku> skuPage = new Page<>(skuDto.getPageIndex(), skuDto.getPageSize());
        LambdaQueryWrapper<Sku> wrapper = new LambdaQueryWrapper<Sku>().like(StrUtil.isNotEmpty(skuDto.getSkuName()), Sku::getSkuName, skuDto.getSkuName());
        skuPage = getBaseMapper().selectPage(skuPage, wrapper);
        List<SkuVo> collect = skuPage.getRecords().stream().map(sku -> {
            System.out.println(sku);
            SkuVo skuVo = BeanUtil.copyProperties(sku, SkuVo.class);
            SkuClass skuClass = skuClassMapper.selectById(sku.getClassId());
            if (skuClass != null) {
                skuVo.setSkuClass(skuClass);
            }
            System.out.println(skuVo);
            return skuVo;
        }).collect(Collectors.toList());
        Page<SkuVo> skuVoPage = new Page<>(skuDto.getPageIndex(), skuDto.getPageSize());
        skuVoPage.setCurrent(skuPage.getCurrent());
        skuVoPage.setSize(skuPage.getSize());
        skuVoPage.setPages(skuPage.getPages());
        skuVoPage.setTotal(skuPage.getTotal());
        skuVoPage.setRecords(collect);
        return new PageBean(skuVoPage);
    }
}
